A web service can be generally defined as one or more application functions that can be invoked over the Internet using a protocol. One example of a protocol that may be used in this context is the Simple Object Access Protocol (SOAP), which may be used by Internet-based application servers, also known as web servers, to provide web services. SOAP is a protocol that is often used in the exchange of information in decentralized, distributed network environments.
One goal of web services is to use the infrastructure of the web to provide information that is machine-readable. Unlike traditional client/server models such as a web server/web page system, web services do not typically provide the user with a graphical user interface (GUI), but instead share business logic, data, and processes through a programmatic interface across a network. As applications are capable of interfacing with web services, developers may add web services to a GUI (e.g. a web page or executable program) to offer specific functionality to users.
Furthermore, different applications from different sources can communicate with each other without extensive custom coding, and web services are not associated with any one operating system or programming language. This flexibility allows more sophisticated business-to-business applications as well as more sophisticated browsing models (with more client-side processing of data) to be developed.
For simple applications, it may be sufficient to have a one-to-one relationship between a user action, a page displayed to a user through a user interface on a computing device, and a web service. However, this limitation would typically be overly restrictive for more complex applications. In many applications, a single page displayed to the user represents an aggregation of multiple types of data. Similarly, a single user action may result in several types of data being examined and modified. Many web services are designed to perform small tasks or units of work; this modularity permits aggregation with other web services in the development of applications.
One known solution for aggregating web services is for a programmer to write customized code for a client application that provides this aggregation. Typically, the client application provides the aggregation of web services to provide a meaningful end user experience. However, writing customized client applications requires time and skill. These client applications must usually be distributed to each endpoint (e.g. client computing device) before they can be used. Furthermore, client applications must also be rewritten and specifically customized for each target platform.